1. Technical Field
A “texture generator” provides techniques reducing texture sizes for use by a graphics processing unit (GPU), and in particular, various techniques for constructing small 2D texture compactions from large globally variant textures or images for use in efficient synthesis of inhomogeneous or globally variant textures on a GPU.
2. Related Art
Texturing or texture synthesis is an essential component for almost every graphics applications, especially computer-based gaming, including PC-type computers and the use of gaming consoles, such as, for example, the Xbox 360®. In general, such systems use one or more GPUs to synthesize images or to texture images or portions of images for display. One limitation generally affecting such systems is that GPU texture memory generally limits the size or number of texture samples used to construct the images or to texture portions of images. The result of this limitation is generally decreased realism or resolution of the synthesized or textured images.
Traditional example-based forward texture synthesis often relies on a small Markov Random Field (MRF) input sample (i.e., the “example” in example-based forward texture synthesis). Unfortunately, due to the limited input data of such samples, these techniques are often unable to reproduce the richness of natural phenomena, such as, for example, surface rust, drying paint, etc.
For example, traditional forward texture synthesis algorithms generally rely on the assumption that the input texture is homogeneous, i.e., local and stationary with respect to the MRF definition. However, not all textures are homogeneous, as natural patterns often exhibit global variations conditioned on environment factors such as iron rusting following the moisture level over a statue. Such textures that are local but not stationary can be referred to as “globally varying” textures. The environmental factors that determine the global texture distribution of such globally varying textures is referred to as a “control map.” Typical examples of control maps include context information, spatial-varying parameters, and a degree map. With the advance of data capturing technologies as well achievable synthesis effects, globally varying textures are becoming more and more important.
Applications based on conventional forward texture synthesis techniques include surface texturing, animation, image editing, time varying phenomena, etc. Such techniques generally use a small texture sample generated from an original input image or input texture to texture another image or model (including 2D and 3D models). The core algorithms of these techniques are generally classified as being either local or global, depending on the texture statistics or characteristics used. One limitation of local forward texture synthesis techniques is such techniques often fail to retain global features of the original input image or input texture used to create the texture sample. Similarly, global forward texture synthesis techniques often fail to retain local texture details of the original input image or input texture used to create the texture sample. In either case, the result is an output image or texture that may lack realism and may include visible artifacts such as discontinuities.
Despite their success, most existing forward synthesis algorithms have limited pattern variation and computation speed, as they have been primarily concerned with synthesizing stationary textures on a computer CPU. The speed issue has been addressed by parallel GPU texture synthesis which runs much faster than CPU-based algorithms. A further advantage of GPU synthesis is reduced storage; this is very important for real-time applications, since typical GPUs often have limited texture memory. Unfortunately, typical GPU-based texture synthesis algorithms do not support globally-variant texture synthesis.
The pattern variation issue has been partially addressed by recent advances in globally variant texture synthesis. For example, several conventional techniques either use stationary inputs and establish artificial correspondence for texture synthesis, or synthesize directly from captured patterns along with control factors. Although the use stationary inputs with artificial correspondence can often produce interesting morphing or transition patterns, such techniques often lack the realism provided when synthesizing directly from captured patterns along with control factors. However, one significant disadvantage of using captured globally variant textures is their large size, which tends to cause memory and speed problems for texture synthesis. This is of particular concern since as texture size increases, GPU performance (in terms of parameters such as rendering speed and frame rate) tends to decrease.